package main

import (
	"fmt"
	"time"
)

//时间函数练习
func main() {
	//	1)	时间和日期相关函数，需要导入 time 包
	//	import (
	//		"time"
	//	)
	now := time.Now()

	//	2)	time.Time 类型，用于表示时间
	fmt.Printf("now=%v \n now type=%t\n", now, now)

	//	3)	如何获取到其它的日期信息（获取年月日时分秒）
	fmt.Printf("年=%v\n", now.Year())
	fmt.Printf("月=%v\n", int(now.Month()))
	fmt.Printf("日=%v\n", now.Day())
	fmt.Printf("时=%v\n", now.Hour())
	fmt.Printf("分=%v\n", now.Minute())
	fmt.Printf("秒=%v\n", now.Second())

	//  4)	格式化日期时间
	//	方式 1: 就是使用 Printf 或者 SPrintf
	fmt.Printf("当前年月日 %d-%d-%02d %02d:%02d:%02d\n",
		now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second())
	sprintf := fmt.Sprintf("当前年月日 %d-%d-%02d %02d:%02d:%02d",
		now.Year(), now.Month(), now.Day(), now.Hour(), now.Minute(), now.Second())
	fmt.Println(sprintf)

	//  方式 2: 使用 time.Format() 方法完成:
	fmt.Println(now.Format("2006/01/02 15:04:05"))
	fmt.Println(now.Format("2006-01-02"))
	fmt.Println(now.Format("15:04:05"))
	//   对上面代码的说明:
	//	"2006/01/02 15:04:05"	这个字符串的各个数字是固定的，必须是这样写。
	//	"2006/01/02 15:04:05"	这个字符串各个数字可以自由的组合，这样可以按程序需求来返回时间和日期

	//	5)	时间的常量
	//const (
	//	Nanosecond	Duration = 1 //纳秒
	//	Microsecond	= 1000 * Nanosecond	//微秒
	//	Millisecond	= 1000 * Microsecond //毫秒Second		= 1000 * Millisecond //秒
	//	Minute	= 60 * Second //分钟
	//	Hour	= 60 * Minute //小时
	//)
	//常量的作用:在程序中可用于获取指定时间单位的时间，比如想得到 100  毫秒 ,100 * time. Millisecond

	//	6)	结合 Sleep 来使用一下时间常量
	fmt.Println("--->结合 Sleep 来使用一下时间常量<---")
	for i := 0; i < 10; i++ {
		fmt.Println(i)
		//休眠
		time.Sleep(time.Second / 10)
	}

	//	7)	time 的 Unix 和 UnixNano 的方法
	fmt.Printf("unix时间戳=%v unixnano时间戳=%v\n", now.Unix(), now.UnixNano())
}
